//
// Created by feng on 19-4-16.
//
#ifndef SOLARENERGY_CHIER_RECTANGLERECEIVERRECTANGLEGRIDRAYTRACING_CUH
#define SOLARENERGY_CHIER_RECTANGLERECEIVERRECTANGLEGRIDRAYTRACING_CUH

#include <driver_types.h>
#include <vector_types.h>

namespace solar
{
    class CloudLoader;
    namespace cuda
    {
        struct SunrayArgument;
        class CudaRectangleReceiver;
        class CudaRectangleGrid;
        struct HeliostatArgument;
    } // namespace cuda
} // namespace solar

namespace solar::cuda
{
    void RectangleReceiverRectangleGridRayTracing(SunrayArgument* sunrayArgument,
                                                  CudaRectangleReceiver* rectangleReceiver,
                                                  CudaRectangleGrid* rectGrid,
                                                  HeliostatArgument* heliostatArgument,
                                                  float3* d_subHeliostat_vertexe, float factor,
                                                  bool res, CloudLoader* cloud,
                                                  cudaStream_t stream = nullptr);
}

#endif // SOLARENERGY_CHIER_RECTANGLERECEIVERRECTANGLEGRIDRAYTRACING_CUH
